{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Homework 6: Regressão Linear Simples \n",
    "Isac do Nascimento Lira, 371890\n",
    "\n",
    "## Estudo de caso: Seguro de automóvel sueco\n",
    "\n",
    "Agora, sabemos como implementar um modelo de regressão linear simples. Vamos aplicá-lo ao conjunto de dados do seguro de automóveis sueco. Esta seção assume que você baixou o conjunto de dados para o arquivo insurance.csv, o qual está disponível no notebook respectivo.\n",
    "\n",
    "O conjunto de dados envolve a previsão do pagamento total de todas as reclamações em milhares de Kronor sueco, dado o número total de reclamações. É um dataset composto por 63 observações com 1 variável de entrada e 1 variável de saída. Os nomes das variáveis são os seguintes:\n",
    "\n",
    "1. Número de reivindicações.\n",
    "2. Pagamento total para todas as reclamações em milhares de Kronor sueco.\n",
    "\n",
    "Voce deve adicionar algumas funções acessórias à regressão linear simples. Especificamente, uma função para carregar o arquivo CSV chamado *load_csv ()*, uma função para converter um conjunto de dados carregado para números chamado *str_column_to_float ()*, uma função para avaliar um algoritmo usando um conjunto de treino e teste chamado *split_train_split ()*, a função para calcular RMSE chamado *rmse_metric ()* e uma função para avaliar um algoritmo chamado *evaluate_algorithm()*.\n",
    "\n",
    "Utilize um conjunto de dados de treinamento de 60% dos dados para preparar o modelo. As previsões devem ser feitas nos restantes 40%. \n",
    "\n",
    "Compare a performabce do seu algoritmo com o algoritmo baseline, o qual utiliza a média dos pagamentos realizados para realizar a predição ( a média é 72,251 mil Kronor).\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "% matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Define uma função para carregar os dados\n",
    "\n",
    "def load_csv(path):    \n",
    "    df = pd.read_csv(path,names=['num_reinv','pag_total'])    \n",
    "    return df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>num_reinv</th>\n",
       "      <th>pag_total</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>108</td>\n",
       "      <td>392.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>19</td>\n",
       "      <td>46.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>13</td>\n",
       "      <td>15.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>124</td>\n",
       "      <td>422.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>40</td>\n",
       "      <td>119.4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   num_reinv  pag_total\n",
       "0        108      392.5\n",
       "1         19       46.2\n",
       "2         13       15.7\n",
       "3        124      422.2\n",
       "4         40      119.4"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "insdf = load_csv('insurance.csv')\n",
    "insdf.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1867beedc88>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(insdf.num_reinv,insdf.pag_total)\n",
    "plt.xlabel('Número de Reinvidicações')\n",
    "plt.ylabel('Pagamento Total')\n",
    "\n",
    "plt.grid(True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Observa-se no gráfico uma relação clara entre o número de reinvidicações e o pagamento total."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#Funções úteis\n",
    "\n",
    "# Calculate the mean value of a list of numbers\n",
    "def mean(values):\n",
    "    return sum(values) / float(len(values))\n",
    "# Calculate the variance of a list of numbers\n",
    "def variance(values, mean):\n",
    "    return sum([(x-mean)**2 for x in values])\n",
    "\n",
    "def covariance(x, mean_x, y, mean_y):\n",
    "    covar = 0.0\n",
    "    for i in range(len(x)):\n",
    "        covar += (x[i] - mean_x) * (y[i] - mean_y)\n",
    "    return covar"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Implementa a classe do modelo de regressão linear simples\n",
    "class simple_linear_regression(object):\n",
    "    \n",
    "    def _init_(self):\n",
    "        self.train = None\n",
    "        self.coef = None\n",
    "        self.intercept = None\n",
    "    \n",
    "    def fit(self,train):\n",
    "        self.train = train\n",
    "        self.get_coefficients()\n",
    "    \n",
    "    def get_coefficients(self):\n",
    "        x = [row[0] for row in self.train]\n",
    "        y = [row[1] for row in self.train]\n",
    "        x_mean, y_mean = mean(x), mean(y)\n",
    "        self.coef = covariance(x, x_mean, y, y_mean) / variance(x, x_mean)\n",
    "        self.intercept = y_mean - self.coef * x_mean\n",
    "    \n",
    "    def predict(self,data):\n",
    "        predictions = []\n",
    "        for row in data:\n",
    "            ypred = self.intercept + self.coef * row[0]\n",
    "            predictions.append(ypred)\n",
    "        return predictions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Avalia o modelo\n",
    "from math import sqrt\n",
    "\n",
    "# Realiza o cálculo da metrica RMSE\n",
    "def rmse_metric(actual, predicted):\n",
    "    sum_error = 0.0\n",
    "    for i in range(len(actual)):\n",
    "        prediction_error = predicted[i] - actual[i]\n",
    "        sum_error += (prediction_error ** 2)\n",
    "    mean_error = sum_error / float(len(actual))\n",
    "    return sqrt(mean_error)\n",
    "\n",
    "# Função que separa os dados em treino e teste\n",
    "\n",
    "def split_train_split(data,splitRatio):\n",
    "    \n",
    "    msk = np.random.rand(len(data)) < splitRatio\n",
    "    trainSet = data[msk]#.values\n",
    "    testSet = data[~msk]#.values \n",
    "    \n",
    "    return trainSet,testSet\n",
    "    \n",
    "# Função para avaliar o modelo\n",
    "def evaluate_algorithm(data,algorithm):\n",
    "    \n",
    "    train,test = split_train_split(data,0.6)\n",
    "    \n",
    "    lm = algorithm()\n",
    "    lm.fit(train)    \n",
    "    predicted = lm.predict(test)\n",
    "    actual = test[:,1]\n",
    "    pred_rmse= rmse_metric(actual, predicted)\n",
    "    \n",
    "    predictedMean = np.zeros_like(actual)\n",
    "    predictedMean[:] = np.mean(actual)\n",
    "    mean_rmse = rmse_metric(actual, predictedMean)\n",
    "\n",
    "    return pred_rmse,mean_rmse,lm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "RMSE - Regressão Linear 42.271767332553594\n",
      "RMSE - Predição pelo valor média 65.68087289669558\n",
      "\n"
     ]
    }
   ],
   "source": [
    "pred_rmse,mean_rmse,lm = evaluate_algorithm(insdf.values,simple_linear_regression)\n",
    "print('')\n",
    "print(\"RMSE - Regressão Linear\", pred_rmse)\n",
    "print(\"RMSE - Predição pelo valor média\", mean_rmse)\n",
    "print('')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Como esperado, o modelo de regressão linear explica bem os dados, tendo um valor RSME menor que a predição pelo valor médio de pagamento."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x1867e8384e0>"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA38AAAFACAYAAAAMBMXeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl81NX1//HXCQQSUEKgiJGIQN0QjEGCGxaxiqACttG6\nfK11oSVYLWpL3RdarbVK3SoqtGrtr4orLlhBxUqxrgWXiEZFZBGMgBgGkAQTcn9/fCbDTMgySWby\nmeX9fDzymLl3Zj5zElonJ/fec8w5h4iIiIiIiKS2DL8DEBERERERkfhT8iciIiIiIpIGlPyJiIiI\niIikASV/IiIiIiIiaUDJn4iIiIiISBpQ8iciIiIiIpIGlPyJiIiIiIikASV/IiIiIiIiaUDJn4iI\niIiISBro6HcAbfG9733P9evXz+8wRESkHSxevPhr51wvv+NIFvqMFBFJDy35fEzq5K9fv34sWrTI\n7zBERKQdmNlKv2NIJvqMFBFJDy35fNS2TxERERERkTSg5E9ERERERCQNKPkTERERERFJA0l95q8h\n1dXVrF69mqqqKr9DkTbKysoiPz+fzMxMv0MREREREUl6KZf8rV69ml133ZV+/fphZn6HI63knGPD\nhg2sXr2a/v37+x2OiIiIiEjSS7ltn1VVVfTs2VOJX5IzM3r27KkVXBERERGRGEm55A9Q4pci9O8o\nIiIiIhI7KbftU0REREQ8paUwezasWgV9+0JxMRQU+B2ViPglJVf+/NahQwcKCwsZPHgw48aNY+PG\njX6HFOGEE06ISUxTp05l2rRpO80fccQRbb62iIiItE1pKUybBhUVkJ/v3U6b5s2LSHpS8hcH2dnZ\nvPfeeyxZsoQePXowffr0mFy3pqYmJtd5/vnn6d69e0yu1ZDXX389btcWkcRXVVPFO+Xv4JzzOxSR\ntDZ7NuTmel8ZGTvuz57td2Qi4hclf3F2+OGHs2bNmtD4lltuYdiwYRQUFHDdddeF5q+//nr2228/\njjzySM4444zQitrIkSO5+OKLKSoq4o477mD9+vWcfPLJDBs2jGHDhvHaa68B8J///IfCwkIKCwsZ\nMmQImzdvpry8nBEjRoRWIV999VUA+vXrx9dffw3ArbfeyuDBgxk8eDC33347ACtWrGDgwIH84he/\nYNCgQRx33HFUVlZG/T3vsssuACxYsICRI0dyyimnsP/++3PmmWeGfhlcvHgxRx11FEOHDmX06NGU\n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\nYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1867db80dd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plota as predições vs dados reais e mostra o erro de predição\n",
    "x = insdf['num_reinv'].values\n",
    "y = insdf['pag_total'].values\n",
    "\n",
    "y_hat = lm.intercept + x.dot(lm.coef)\n",
    "\n",
    "fig,axs = plt.subplots(1,2,figsize=[15,5])\n",
    "axs[0].plot(x,y_hat,'g-',label='Regression Line',alpha=0.6)\n",
    "axs[0].scatter(x,y,alpha=0.5,label='Actual Values')\n",
    "axs[0].set_xlabel('Nº Reinvidicações')\n",
    "axs[0].set_ylabel('Pagamento Total')\n",
    "axs[0].legend(loc='best')\n",
    "\n",
    "error = (y_hat-y)\n",
    "axs[1].scatter(x,error,alpha=0.5,color='b')\n",
    "axs[1].axhline(0,color='k')\n",
    "axs[1].set_xlabel('Nº Reinvidicações')\n",
    "axs[1].set_ylabel('Erro de predição')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
